package com.ellwood.modules.system.service;

import com.ellwood.common.core.base.ServiceFactory;
import com.ellwood.common.core.result.PageResult;
import com.ellwood.dataMapper.system.entity.UserEntity;
import com.ellwood.modules.system.domain.VO.user.UserEditVO;
import com.ellwood.modules.system.domain.VO.user.UserPageQueryVO;
import com.ellwood.modules.system.domain.VO.user.UserQueryVo;
import com.ellwood.modules.system.domain.VO.user.UserSaveVo;
import com.ellwood.modules.system.domain.dto.UserPageQueryDto;
import com.ellwood.modules.system.domain.dto.UserQueryDto;

import java.util.List;

/**
 * @ProjectName: Ellwood-framework-boot
 * @PackageName: com.ellwood.modules.system.service
 * @ClassName: UserService
 * @Description: // 用户service接口
 * @Author: Ellwood
 * @CreateDate: 2024/7/22 - 上午11:45
 * @Version: V1.0.0
 */
public interface UserService extends ServiceFactory<UserEntity> {

    /**
     * 查询所有
     *
     * @return 返回用户数据
     */
    List<UserQueryDto> findAll(UserQueryVo queryVo);

    /**
     * 根据id查询
     *
     * @param id 用户id
     * @return 返回数据
     */
    UserQueryDto findById(Long id);

    /**
     * 分页查询
     *
     * @param pageVo 分页参数
     * @return 返回结果
     */
    PageResult<UserPageQueryDto> pageQuery(UserPageQueryVO pageVo);

    /**
     * 保存用户
     *
     * @param userVo 用户信息
     */
    void saveUser(UserSaveVo userVo);

    /**
     * 更新用户
     *
     * @param userVo 要更新的用户信息
     */
    void updateUser(UserEditVO userVo);

    /**
     * 删除用户-批量
     *
     * @param idList 用户id列表
     * @return 返回结果
     */
    boolean delete(List<Long> idList);
}
